4892e81ed482503284aca8e4632fff8288339fa9,jetty-util/src/test/java/org/eclipse/jetty/util/thread/QueuedThreadPoolTest.java,QueuedThreadPoolTest,testThreadPool,#,52

Before Change


        assertEquals(5,tp.getIdleThreads());
        Thread.sleep(1000);
        assertEquals(5,tp.getThreads());
        assertEquals(5,tp.getIdleThreads());
        
        RunningJob job=new RunningJob();
        tp.dispatch(job);
        Thread.sleep(200);
        assertEquals(5,tp.getThreads());
        assertEquals(4,tp.getIdleThreads());
        job._running=false;
        Thread.sleep(200);
        assertEquals(5,tp.getThreads());
        assertEquals(5,tp.getIdleThreads());

        RunningJob[] jobs = new RunningJob[5];
        for (int i=0;i<jobs.length;i++)
        {
            jobs[i]=new RunningJob();
            tp.dispatch(jobs[i]);
        }
        Thread.sleep(200);
        assertEquals(5,tp.getThreads());
        Thread.sleep(1000);
        assertEquals(5,tp.getThreads());
        
        job=new RunningJob();
        tp.dispatch(job);
        assertEquals(6,tp.getThreads());
        
        job._running=false;
        Thread.sleep(1000);
        assertEquals(5,tp.getThreads());
        
        jobs[0]._running=false;
        Thread.sleep(1000);

        assertEquals(5,tp.getThreads());
        assertEquals(1,tp.getIdleThreads());
        
        for (int i=1;i<jobs.length;i++)
            jobs[i]._running=false;

        Thread.sleep(1000);

        assertEquals(5,tp.getThreads());
        
        
        jobs = new RunningJob[15];
        for (int i=0;i<jobs.length;i++)
        {
            jobs[i]=new RunningJob();
            tp.dispatch(jobs[i]);
        }
        assertEquals(10,tp.getThreads());
        Thread.sleep(100);
        assertEquals(0,tp.getIdleThreads());

        for (int i=0;i<9;i++)
            jobs[i]._running=false;

After Change


        RunningJob job=new RunningJob();
        tp.dispatch(job);
        waitForIdle(tp,4);
        waitForThreads(tp,5);

        job.stop();
        waitForIdle(tp,5);
        waitForThreads(tp,5);
        
        Thread.sleep(200);
        waitForIdle(tp,5);
        waitForThreads(tp,5);

        RunningJob[] jobs = new RunningJob[5];
        for (int i=0;i<jobs.length;i++)
        {
            jobs[i]=new RunningJob();
            tp.dispatch(jobs[i]);
        }
        waitForIdle(tp,0);
        waitForThreads(tp,5);
        
        job=new RunningJob();
        tp.dispatch(job);
        waitForThreads(tp,6);
        
        job.stop();
        waitForThreads(tp,5);
        
        jobs[0].stop();
        waitForIdle(tp,1);
        waitForThreads(tp,5);
        
        for (int i=1;i<jobs.length;i++)
            jobs[i].stop();

        waitForIdle(tp,5);
        waitForThreads(tp,5);
        
        jobs = new RunningJob[15];
        for (int i=0;i<jobs.length;i++)
        {
            jobs[i]=new RunningJob();
            tp.dispatch(jobs[i]);
        }
        waitForIdle(tp,0);
        waitForThreads(tp,10);
        for (int i=0;i<9;i++)
            jobs[i].stop();
        waitForThreads(tp,9);
        
        for (int i=9;i<jobs.length;i++)
            jobs[i].stop();